package cn.wolfcode.job;

import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.lite.api.JobScheduler;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.reg.base.CoordinatorRegistryCenter;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;

/**
 *  elstaticjob maven项目测试
 */
public class JobDemo {
    // -----------------------
    public static void main(String[] args) {
        new JobScheduler(createRegistryCenter(), createJobConfiguration()).init();
    }

    // 注册中心 ----------项目中一般 只要配置一次 ---------------
    private static CoordinatorRegistryCenter createRegistryCenter() {
        //配置zk地址,调度任务的组名
        ZookeeperConfiguration zookeeperConfiguration = new ZookeeperConfiguration("localhost:2181", "elastic-job-demo"); //elastic-job-demo 项目名（自己定义，可视化工具根据这个名生成文件名）
        // 会话超时的时间
        zookeeperConfiguration.setSessionTimeoutMilliseconds(100);
        CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zookeeperConfiguration);
        regCenter.init();
        return regCenter;
    }

    // 任务的配置信息 ------------一般项目中，只要配置一次 -------------
    private static LiteJobConfiguration createJobConfiguration() {

        // 定义作业核心配置
        JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder("demoSimpleJob","0/5 * * * * ?",1).build(); // demoSimpleJob 任务名

        // 定义SIMPLE类型配置  (反射获取)
        SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, MyElasticJob.class.getCanonicalName());

        // 定义Lite作业根配置
        // 项目改了配置时默认时elastic-job是不修改的，可以增加 overwrite(true)设置为可修改,设置false设置不能修改
//        LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build();
          LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).overwrite(true).build();//可以增加 overwrite(true)设置为可修改
        return simpleJobRootConfig;
    }
}
